home *** CD-ROM | disk | FTP | other *** search
/ PC Media 20 / PC MEDIA CD20.iso / share / prog / spytrak / test.doc < prev    next >
Text File  |  1995-01-05  |  21KB  |  558 lines

  1. To help the user assess the SPY-TRAK qualities, and to compare it
  2. with other disassemblers available on the market, here are provided 
  3. some examples:
  4.  
  5. EXAMPLE 1:
  6.    Check if program TEST.EXE is in your SPY-TRAK package. 
  7.    Check if TEST.ASM - the source code of TEST.EXE, is in the package.
  8.    Use an editor, or the enclosed LIST.COM to open TEST.ASM to see its 
  9.    structure. 
  10.    See the _TEST procedure:
  11.  
  12.         _Test  PROC
  13.                 ret
  14.         Data_3  db    7 dup(?)  
  15.         _Test   ENDP
  16.  
  17.    If you have SOURCER disassembler, or a similar program, you can
  18.    get TEST.LST, i.e. disassembled listing of TEST.EXE, which will
  19.    show the _TEST procedure as:
  20.                          sub_1           proc    near
  21. 8238:0034  C3                            retn
  22.                          sub_1           endp
  23.   
  24. 8238:0035  0005[0000]    data_1          dw      5 dup (0)
  25. 8238:003F  00                            db      0
  26.  
  27.    In both the cases the procedure is limited to the RET instruction. 
  28.    Full listing of TEST.EXE made by a disassembler such as SOURCER is 
  29.    provided at the end of this text.
  30.    
  31.    Now, if you installed SPY-TRAK, run tracking of TEST.EXE.
  32.    NOTICE: TEST.EXE must be in default directory. 
  33.    The steps to track TEST.EXE will look as follows:
  34.    1SPY
  35.    Track program............1
  36.    Enter filespec: TEST.EXE <RETURN>
  37.  
  38.    Alt hot key combo (A-Z,0-9,"-","=") default is <Alt_T>
  39.    Do you want to change it ?  <Y/N>............... [N]
  40.  
  41.    "HOT START" option?         <Y/N>............... [Y]
  42.  
  43.    "SINGLE STEP" option ?      <Y/N>............... [N]
  44.  
  45.    Stop for "ACTION SCREEN"    <Y/N>............... [N] 
  46.    
  47.    Follow through till a mispositioned  "This is TEST #1. <PRESS ANY
  48.    KEY TO CONTINUE>" appears on the screen. Press any key to complete,
  49.    then select:
  50.  
  51.    List the track file ....1
  52.  
  53.    When DONE, press <ESC>,<ESC> to exit SPY-TRAK.
  54.    To view $TEST.LST, the TEST.EXE listing, type
  55.    LIST $TEST.LST <RETURN>
  56.    The listing made by SPY-TRAK shall be looking like the one
  57.    provided below.  Notice the real contents of the _TEST procedure
  58.    which is loaded at address locations 4269:0034 through 003B.
  59.    The _TEST procedure is filled with instruction by the program itself. 
  60.    The instructions are encoded in  Data_2 in TEST.ASM/TEST.EXE,
  61.    or in data_3 in the SOURCER type disassembling.
  62.  
  63.  
  64. 4269:0000 B86D42        MOV     AX,426D
  65. 4269:0003 8ED8          MOV     DS,AX
  66. 4269:0005 FC            CLD
  67. 4269:0006 BE3000        MOV     SI,0030
  68. 4269:0009 BF3500        MOV     DI,0035
  69. 4269:000C 4F            DEC     DI
  70. 4269:000D B90800        MOV     CX,0008
  71. 4269:0010 AC            LODSB
  72. 4269:0011 2E            CS:
  73. 4269:0012 8805          MOV     [DI],AL
  74. 4269:0014 47            INC     DI
  75. 4269:0015 E2F9          LOOP    0010
  76. 4269:0017 B000          MOV     AL,00
  77. 4269:0019 3C00          CMP     AL,00
  78. 4269:001B 740A          JE      0027
  79. 4269:0027 E80A00        CALL    0034
  80. 4269:002A B400          MOV     AH,00
  81. 4269:002C CD16          INT     16
  82. 4269:002E CD08          INT     08
  83. 4269:0030 B44C          MOV     AH,4C
  84. 4269:0032 CD21          INT     21
  85.  
  86. 4269:0034 BA0000        MOV     DX,0000
  87. 4269:0037 B409          MOV     AH,09
  88. 4269:0039 CD21          INT     21
  89. 4269:003B C3            RET     
  90.  
  91.  
  92. EXAMPLE 2:
  93.     Program listing (e.g. $TEST.LST) made by SPAY-TRAK lists only 
  94.     the instructions which have been executed in the tracked program.
  95.     In $TEST.LST, execution of the conditional JE: 
  96. 4269:001B 740A          JE      0027,
  97.     when Zero Flag is set (ZF=1,ZR), will result in bypassing instructions 
  98.     located at 4269:001D through 0025.
  99.     However, utilizing options provided in ACTION SCREEN of SPY-TRAK we can 
  100.     change the flow of program instruction. And that may be helpful for some 
  101.     hacking attempts. 
  102.     To test this option on TEST.EXE go through all the steps given in 
  103.     EXAMPLE 1, except declare YES at:
  104.  
  105.    Stop for "ACTION SCREEN"    <Y/N>............... [Y] 
  106.  
  107.     Next, input:  
  108.                     IP   CODE
  109.    FIRST STOP AT = 001B   74               <RETURN>
  110.    
  111.     Complete through.
  112.  
  113.     The ACTION SCREEN shall stop to process the following instruction: 
  114.     
  115. AX=4200  BX=0000  CX=0000  DX=4259  SP=0100  BP=091C  SI=0038  DI=003C
  116. DS=426D  ES=4259  SS=4271  CS=4269  IP=001B   NV UP EI NG ZR NA PE NC
  117. 4269:001B 740A          JE      0027
  118.  
  119.    Remember Zero Flag is set: ZR, or ZF=1.  
  120.    Select (1).
  121.    Move coursor to ZF. Input 0 - in place of 1. <RETURN>
  122.    Select (5).
  123.    Follow through till "This is TEST #1. <PRESS ANY KEY TO CONTINUE>", 
  124.    appears on the screen. Press any key to complete.
  125.  
  126.    Select:
  127.  
  128.    List the track file ....1
  129.  
  130.    Now, the listing ($TEST.LST) is showing memory locations 4269:001D
  131.    through 0025:
  132. 4269:001D B402          MOV     AH,02
  133. 4269:001F B700          MOV     BH,00
  134. 4269:0021 B60A          MOV     DH,0A
  135. 4269:0023 B20F          MOV     DL,0F
  136. 4269:0025 CD10          INT     10
  137.  
  138.    You may repeat the same test selecting (3) and step through the rest 
  139.    of the program.
  140.  
  141.  
  142. EXAMPLE 3:
  143.    This example is to show how to track inside of interrupts. We will  
  144.    get the code of INT 8 called at IP=002E in TEST.EXE. The sequence
  145.    is as follows:
  146.    1SPY
  147.    THREADING Data Editor...4
  148.  
  149.    Tracked FILESPEC:
  150.    TEST.EXE <RETURN>
  151.  
  152.    INT 08  <RETURN><RETURN><RETURN><RETURN><RETURN><RETURN><RETURN>
  153.            <RETURN><RETURN><RETURN>
  154.    IP 002E <RETURN>
  155.    <END>
  156.    
  157.    {You may want to check your input. To do so follow the steps:
  158.                         Tracked FILESPEC:
  159.                         TEST.EXE  <RETURN>
  160.                         <F2>
  161.                         <ESC><ESC><ESC> }
  162.  
  163.    Setup menu..............3
  164.    INTERRUPT TRACKING......4
  165.    INTERRUPTS-> ON    <RETURN>
  166.    <ESC>
  167.  
  168.    Track program...........1
  169.  
  170.    Enter filespec: TEST.EXE
  171.  
  172.    Alt hot key combo (A-Z,0-9,"-","=") default is <Alt_T>
  173.    Do you want to change it ?  <Y/N>............... [N]
  174.  
  175.    "HOT START" option?         <Y/N>............... [Y]
  176.  
  177.    "SINGLE STEP" option ?      <Y/N>............... [N]
  178.  
  179.    Stop for "ACTION SCREEN"    <Y/N>............... [N] 
  180.    
  181.    Follow through till mispositioned  "This is TEST #1. <PRESS ANY
  182.    KEY TO CONTINUE>", appears on the screen. Press any key to complete.
  183.    Then select:
  184.  
  185.    List the track file ....1
  186.  
  187.    When DONE, press ESC, ESC to exit SPY-TRAK.
  188.    To view $TEST.LST, the TEST.EXE listing, type
  189.    LIST $TEST.LST
  190.    See the listing enclosed at the end of this text to find
  191.    the code tracked inside INT 8.
  192.  
  193. EXAMPLE 4:
  194.    This example will show a benefit of forcing CX to 1, to beat 
  195.    a nasty loop placed in a program you want to hack.
  196.    First make the program, using direct assembling by DEBUG:
  197.    DEBUG <RETURN>
  198.    -A
  199.    ....:0100 MOV CX,10   <RETURN>
  200.    ....:0103 PUSH CX     <RETURN>
  201.    ....:0104 NOP         <RETURN>
  202.    ....:0105 POP CX      <RETURN>
  203.    ....:0106 MOV AX,CX   <RETURN>
  204.    ....:0108 PUSH AX     <RETURN>
  205.    ....:0109 LOOP 0104   <RETURN>
  206.    ....:010B INT 20      <RETURN>
  207.    ....:010D <RETURN>
  208.    -N TEST.COM    <RETURN>
  209.    -R CX   <RETURN>
  210.     : D  <RETURN>
  211.    -Q  <RETURN>
  212.  
  213.    1SPY <RETURN>
  214.  
  215.    Setup menu..............3
  216.  
  217.    LOOP TRACKING MODE......2
  218.    LOOPS-> OPEN <RETURN>
  219.    <ESC>
  220.  
  221.    Enter filespec: TEST.COM <RETURN>
  222.  
  223.    To test TEST.COM  go through all the steps given in EXAMPLE 1, 
  224.    except declare YES at:
  225.  
  226.    Stop for "ACTION SCREEN"    <Y/N>............... [Y] 
  227.  
  228.     Next, input:  
  229.                     IP   CODE
  230.    FIRST STOP AT = 0109   E2               <RETURN>
  231.    
  232.     Complete through.
  233.  
  234.    In ACTION SCREEN select 3.
  235.                     Select 3.
  236.                     Select 3.
  237.                     Select 3.
  238.                     Select 3.
  239.    { This is to walk you one lap, to show how the endless looping is created.
  240.      Watch the changing value of CX.}
  241.                     Select 6.
  242.                     Select 3.
  243.                     Select 3.
  244.  
  245.    Documentation of the program execution is recorded in $TEST.TRC. 
  246.    A printout of $TEST.TRC is provided at the end of this text.
  247.    For your information, a similar loop structure you will find in
  248.    some programs equipped with antitracking schemes.
  249.    WARNING: Don't run TEST.COM outside SPY-TRAK, or using SPY-TRAK 
  250.             without modifications listed in the steps above. 
  251.             Or, you will have to break out of the loop by rebooting
  252.             your system.
  253.  
  254.  
  255.  
  256.  
  257. ;-----------------------------------------------------------------
  258. :TEST.EXE,
  259. ;type SOURCER program made disassembling:
  260. ;-----------------------------------------------------------------
  261.       test.lst        
  262.  
  263.                                 seg_a           segment byte public
  264.                                                 assume cs:seg_a , ds:seg_a , ss:stack_seg_c
  265.   
  266.   
  267.                                 test            proc    far
  268.   
  269. 8238:0000                       start:
  270. 8238:0000  B8 823C                              mov     ax,seg_b
  271. 8238:0003  8E D8                                mov     ds,ax
  272. 8238:0005  FC                                   cld                            
  273. 8238:0006 .BE 0030                              mov     si,offset data_3       
  274. 8238:0009 .BF 0035                              mov     di,offset data_1       
  275. 8238:000C  4F                                   dec     di
  276. 8238:000D  B9 0008                              mov     cx,8
  277.   
  278. 8238:0010                       locloop_1:                                     
  279. 8238:0010  AC                                   lodsb                          
  280. 8238:0011  2E: 88 05                            mov     cs:[di],al
  281. 8238:0014  47                                   inc     di
  282. 8238:0015  E2 F9                                loop    locloop_1              
  283.   
  284. 8238:0017  B0 00                                mov     al,0
  285. 8238:0019  3C 00                                cmp     al,0
  286. 8238:001B  74 0A                                je      loc_2                  
  287. 8238:001D  B4 02                                mov     ah,2
  288. 8238:001F  B7 00                                mov     bh,0
  289. 8238:0021  B6 0A                                mov     dh,0Ah
  290. 8238:0023  B2 0F                                mov     dl,0Fh
  291. 8238:0025  CD 10                                int     10h                    
  292.                                                                                
  293. 8238:0027                       loc_2:                                         
  294.  
  295. 8238:0027  E8 000A                              call    sub_1                  
  296. 8238:002A  B4 00                                mov     ah,0
  297. 8238:002C  CD 16                                int     16h                    
  298.                                                                                
  299. 8238:002E  CD 08                                int     8                      
  300. 8238:0030  B4 4C                                mov     ah,4Ch                 
  301. 8238:0032  CD 21                                int     21h                    
  302.                                                                                
  303.   
  304.                                 test            endp
  305.   
  306.                                 sub_1           proc    near
  307. 8238:0034  C3                                   retn
  308.                                 sub_1           endp
  309.   
  310. 8238:0035  0005[0000]           data_1          dw      5 dup (0)              
  311. 8238:003F  00                                   db      0
  312.   
  313.                                 seg_a           ends
  314.   
  315.                                 seg_b           segment byte public
  316.                                                 assume cs:seg_b , ds:seg_b , ss:stack_seg_c
  317.   
  318. 823C:0000  54 68 69 73 20 69                    db      'This is TEST # 1. <PRESS ANY KEY'
  319. 823C:0006  73 20 54 45 53 54
  320. 823C:000C  20 23 20 31 2E 20
  321. 823C:0012  3C 50 52 45 53 53
  322. 823C:0018  20 41 4E 59 20 4B
  323. 823C:001E  45 59
  324. 823C:0020  20 54 4F 20 43 4F                    db      ' TO CONTINUE>', 0Dh, 0Ah, '$'
  325. 823C:0026  4E 54 49 4E 55 45
  326. 823C:002C  3E 0D 0A 24
  327. 823C:0030  BA                   data_3          db      0BAh                   
  328. 823C:0031  00 00 B4 09 CD 21                    db       00h, 00h,0B4h, 09h,0CDh, 21h
  329. 823C:0037  C3                                   db      0C3h
  330. 823C:0038  0008[00]                             db      8 dup (0)
  331.   
  332.                                 seg_b           ends
  333.   
  334.   
  335.                                                 end     start
  336.  
  337.  
  338. ;-----------------------------------------------------------------
  339. ; TEST.EXE
  340. ; SPY-TRAK made disassembling, including tracking inside INT 8.
  341. ; Code located at CS=13D6,3239,F000 has been tracked inside INT 8.
  342. ;-----------------------------------------------------------------
  343.  
  344. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  345. C:\SPY\TEST.EXE
  346. SPY-TRAK  v2.51 Listing
  347. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  348.  
  349.  
  350. ═════════════════ entry into tracked part of program 
  351.  
  352. AX=0000  BX=0000  CX=00FF  DX=4259  SP=0100  BP=091C  SI=0000  DI=0100
  353. DS=4259  ES=4259  SS=4271  CS=4269  IP=0000   NV UP EI NG ZR NA PE NC
  354. 4269:0000 B86D42        MOV     AX,426D
  355. ══════════════════════════════════════════════════════════════════════
  356.  
  357. ══════════════════════ last tracked instruction 
  358. AX=4C0D  BX=0000  CX=0000  DX=0000  SP=0100  BP=091C  SI=0038  DI=003C
  359. DS=426D  ES=4259  SS=4271  CS=4269  IP=0032   NV UP EI NG ZR NA PE NC
  360. 4269:0032 CD21          INT     21
  361. ══════════════════════════════════════════════════════════════════════
  362.  
  363. Tracked segments number:    4
  364.  
  365. Tracked code listing:
  366.  
  367. 13D6:▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  368. 13D6:003C E80801        CALL    0147
  369. 13D6:0147 50            PUSH    AX
  370. 13D6:0148 55            PUSH    BP
  371. 13D6:0149 06            PUSH    ES
  372. 13D6:014A 2E            CS:
  373. 13D6:014B 8E060A00      MOV     ES,[000A]
  374. 13D6:014F 2E            CS:
  375. 13D6:0150 8B2E1000      MOV     BP,[0010]
  376. 13D6:0154 B001          MOV     AL,01
  377. 13D6:0156 26            ES:
  378. 13D6:0157 864600        XCHG    [BP]+00,AL
  379. 13D6:015A 3C00          CMP     AL,00
  380. 13D6:015C 754F          JNE     01AD
  381. 13D6:015E 2E            CS:
  382. 13D6:015F 832E100008    SUB     WORD PTR [0010],+08
  383. 13D6:0164 26            ES:
  384. 13D6:0165 896602        MOV     [BP]+02,SP
  385. 13D6:0168 26            ES:
  386. 13D6:0169 8C5604        MOV     [BP]+04,SS
  387. 13D6:016C 8BC5          MOV     AX,BP
  388. 13D6:016E 26            ES:
  389. 13D6:016F 8B6E06        MOV     BP,[BP]+06
  390. 13D6:0172 26            ES:
  391. 13D6:0173 394600        CMP     [BP]+00,AX
  392. 13D6:0176 7542          JNE     01BA
  393. 13D6:0178 55            PUSH    BP
  394. 13D6:0179 8BEC          MOV     BP,SP
  395. 13D6:017B 8B4608        MOV     AX,[BP]+08
  396. 13D6:017E 5D            POP     BP
  397. 13D6:017F 06            PUSH    ES
  398. 13D6:0180 17            POP     SS
  399. 13D6:0183 8BE8          MOV     BP,AX
  400. 13D6:0185 2E            CS:
  401. 13D6:0186 8B6E00        MOV     BP,[BP]+00
  402. 13D6:0189 9C            PUSHF
  403. 13D6:018A 2E            CS:
  404. 13D6:018B FF5E00        CALL    FAR [BP]+00
  405. 13D6:018E 8BEC          MOV     BP,SP
  406. 13D6:0190 26            ES:
  407. 13D6:0191 8B6E00        MOV     BP,[BP]+00
  408. 13D6:0194 26            ES:
  409. 13D6:0195 8E5604        MOV     SS,[BP]+04
  410. 13D6:019C 26            ES:
  411. 13D6:019D C6460000      MOV     BYTE PTR [BP]+00,00
  412. 13D6:01A1 2E            CS:
  413. 13D6:01A2 892E1000      MOV     [0010],BP
  414. 13D6:01A6 07            POP     ES
  415. 13D6:01A7 5D            POP     BP
  416. 13D6:01A8 58            POP     AX
  417. 13D6:01A9 83C402        ADD     SP,+02
  418. 13D6:01AC CF            IRET
  419.  
  420.  
  421. 4269:▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  422. 4269:0000 B86D42        MOV     AX,426D
  423. 4269:0003 8ED8          MOV     DS,AX
  424. 4269:0005 FC            CLD
  425. 4269:0006 BE3000        MOV     SI,0030
  426. 4269:0009 BF3500        MOV     DI,0035
  427. 4269:000C 4F            DEC     DI
  428. 4269:000D B90800        MOV     CX,0008
  429. 4269:0010 AC            LODSB
  430. 4269:0011 2E            CS:
  431. 4269:0012 8805          MOV     [DI],AL
  432. 4269:0014 47            INC     DI
  433. 4269:0015 E2F9          LOOP    0010
  434. 4269:0017 B000          MOV     AL,00
  435. 4269:0019 3C00          CMP     AL,00
  436. 4269:001B 740A          JE      0027
  437. 4269:0027 E80A00        CALL    0034
  438. 4269:002A B400          MOV     AH,00
  439. 4269:002C CD16          INT     16
  440. 4269:002E CD08          INT     08
  441. 4269:0030 B44C          MOV     AH,4C
  442. 4269:0032 CD21          INT     21
  443. 4269:0034 BA0000        MOV     DX,0000
  444. 4269:0037 B409          MOV     AH,09
  445. 4269:0039 CD21          INT     21
  446. 4269:003B C3            RET     
  447.  
  448. F000:▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  449. F000:0764 0BE4          OR      SP,SP
  450. F000:0766 E9ADE5        JMP     ED16
  451. F000:901B 50            PUSH    AX
  452. F000:901C 0F01E0        SMSW    AX
  453. F000:901F A801          TEST    AL,01
  454. F000:9021 757A          JNE     909D
  455. F000:9023 2E            CS:
  456. F000:9024 8A265602      MOV     AH,[0256]
  457. F000:9028 0AE4          OR      AH,AH
  458. F000:902A 7471          JE      909D
  459. F000:909D 58            POP     AX
  460. F000:909E E97A5C        JMP     ED1B
  461. F000:ECE7 FB            STI
  462. F000:ECE8 1E            PUSH    DS
  463. F000:ECE9 6A40          PUSH    40
  464. F000:ECEB 1F            POP     DS
  465. F000:ECEC 56            PUSH    SI
  466. F000:ECED 57            PUSH    DI
  467. F000:ECEE BE6C00        MOV     SI,006C
  468. F000:ECF1 BF6E00        MOV     DI,006E
  469. F000:ECF4 FF04          INC     WORD PTR [SI]
  470. F000:ECF6 7502          JNE     ECFA
  471. F000:ECFA 833D18        CMP     WORD PTR [DI],+18
  472. F000:ECFD 7512          JNE     ED11
  473. F000:ED11 5F            POP     DI
  474. F000:ED12 5E            POP     SI
  475. F000:ED13 E94E1A        JMP     0764
  476. F000:ED16 7403          JE      ED1B
  477. F000:ED18 E900A3        JMP     901B
  478. F000:ED1B 50            PUSH    AX
  479. F000:ED1C 52            PUSH    DX
  480. F000:ED1D FE0E4000      DEC     BYTE PTR [0040]
  481. F000:ED21 750B          JNE     ED2E
  482. F000:ED2E CD1C          INT     1C
  483. F000:ED30 FA            CLI
  484. F000:ED31 B020          MOV     AL,20
  485. F000:ED33 E620          OUT     20,AL
  486. F000:ED35 5A            POP     DX
  487. F000:ED36 58            POP     AX
  488. F000:ED37 1F            POP     DS
  489. F000:ED38 CF            IRET
  490. F000:FEA5 E93FEE        JMP     ECE7
  491.  
  492.  
  493. ;-----------------------------------------------------------------
  494. ; TEST.COM, EXAMPLE 4 
  495. ; SPY-TRAK made disassembling, $TEST.TRC track file
  496. ;-----------------------------------------------------------------
  497. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  498. C:\SPY\TEST.COM
  499. SPY-TRAK  v2.51 Listing
  500. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  501.  
  502. 04-Dec-1994             0: 0:37                 <Start>
  503.  
  504. AX=0000  BX=0000  CX=00FF  DX=4259  SP=FFFE  BP=091C  SI=0100  DI=FFFE
  505. DS=4259  ES=4259  SS=4259  CS=4259  IP=0100   NV UP EI NG ZR NA PE NC
  506. 4259:0100 B91000        MOV     CX,0010
  507.  
  508. AX=0000  BX=0000  CX=0010  DX=4259  SP=FFFE  BP=091C  SI=0100  DI=FFFE
  509. DS=4259  ES=4259  SS=4259  CS=4259  IP=0103   NV UP EI NG ZR NA PE NC
  510. 4259:0103 51            PUSH    CX
  511.  
  512. AX=0000  BX=0000  CX=0010  DX=4259  SP=FFFC  BP=091C  SI=0100  DI=FFFE
  513. DS=4259  ES=4259  SS=4259  CS=4259  IP=0104   NV UP EI NG ZR NA PE NC
  514. 4259:0104 90            NOP
  515.  
  516. AX=0000  BX=0000  CX=0010  DX=4259  SP=FFFC  BP=091C  SI=0100  DI=FFFE
  517. DS=4259  ES=4259  SS=4259  CS=4259  IP=0105   NV UP EI NG ZR NA PE NC
  518. 4259:0105 59            POP     CX
  519.  
  520. AX=0000  BX=0000  CX=0010  DX=4259  SP=FFFE  BP=091C  SI=0100  DI=FFFE
  521. DS=4259  ES=4259  SS=4259  CS=4259  IP=0106   NV UP EI NG ZR NA PE NC
  522. 4259:0106 89C8          MOV     AX,CX
  523.  
  524. AX=0010  BX=0000  CX=0010  DX=4259  SP=FFFE  BP=091C  SI=0100  DI=FFFE
  525. DS=4259  ES=4259  SS=4259  CS=4259  IP=0108   NV UP EI NG ZR NA PE NC
  526. 4259:0108 50            PUSH    AX
  527.  
  528. AX=0010  BX=0000  CX=0010  DX=4259  SP=FFFC  BP=091C  SI=0100  DI=FFFE
  529. DS=4259  ES=4259  SS=4259  CS=4259  IP=0109   NV UP EI NG ZR NA PE NC
  530. 4259:0109 E2F9          LOOP    0104    ;CX=0010, it will always take this
  531.                                         ;value if not forced to do otherwise
  532.  
  533. AX=0010  BX=0000  CX=000F  DX=4259  SP=FFFC  BP=091C  SI=0100  DI=FFFE
  534. DS=4259  ES=4259  SS=4259  CS=4259  IP=0104   NV UP EI NG ZR NA PE NC
  535. 4259:0104 90            NOP
  536.  
  537. AX=0010  BX=0000  CX=000F  DX=4259  SP=FFFC  BP=091C  SI=0100  DI=FFFE
  538. DS=4259  ES=4259  SS=4259  CS=4259  IP=0105   NV UP EI NG ZR NA PE NC
  539. 4259:0105 59            POP     CX
  540.  
  541. AX=0010  BX=0000  CX=0010  DX=4259  SP=FFFE  BP=091C  SI=0100  DI=FFFE
  542. DS=4259  ES=4259  SS=4259  CS=4259  IP=0106   NV UP EI NG ZR NA PE NC
  543. 4259:0106 89C8          MOV     AX,CX
  544.  
  545. AX=0010  BX=0000  CX=0010  DX=4259  SP=FFFE  BP=091C  SI=0100  DI=FFFE
  546. DS=4259  ES=4259  SS=4259  CS=4259  IP=0108   NV UP EI NG ZR NA PE NC
  547. 4259:0108 50            PUSH    AX
  548.  
  549. AX=0010  BX=0000  CX=0010  DX=4259  SP=FFFC  BP=091C  SI=0100  DI=FFFE
  550. DS=4259  ES=4259  SS=4259  CS=4259  IP=0109   NV UP EI NG ZR NA PE NC
  551. 4259:0109 E2F9          LOOP    0104      ;point of forcing CX -> 0001
  552.  
  553. AX=0010  BX=0000  CX=0000  DX=4259  SP=FFFC  BP=091C  SI=0100  DI=FFFE
  554. DS=4259  ES=4259  SS=4259  CS=4259  IP=010B   NV UP EI NG ZR NA PE NC
  555. 4259:010B CD20          INT     20
  556.  
  557.  
  558.